/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Parser.Validador;

import Utilidades.VerificadorStrings;
import Utilidades.StrOp;

/**
 *
 * @author Administrador
 */
public class ValidadorTagFinal implements IValidador {
    String str;

    public boolean validar(String str) {
        boolean resultado = true;
        this.str = str;

        try {

            if (VerificadorStrings.esInicioFin(str, "</", ">") == false) {
                resultado = false;
            }
            else if (VerificadorStrings.estaVacia(str, "</", ">") == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, "<", 1,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, ">", 1,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, ">", 1,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, "?", 0,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, "-", 0,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, "!", 0,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.tieneMasDe(str, "/", 1,true) == true) {
                resultado = false;
            }
            else if (VerificadorStrings.validarNombreTag(str, "</", ">") == false) {
                resultado = false;
            }
            else if (validarSinVariables(str, "</", ">") == false) {
                resultado = false;
            }

        } catch (Exception e) {
            resultado = false;
        } finally {
            return resultado;
        }
    }

    private boolean validarSinVariables(String str, String tInicio, String tFinal) {
        return StrOp.separar(str, " ", tInicio, tFinal, '"', '"').length == 1;
    }

}
